 /*******************************************************************************
  * Copyright (c) 2000, 2007 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
  * IBM Corporation - initial API and implementation
  * Chris Gross chris.gross@us.ibm.com Bug 107443
  *******************************************************************************/
 package org.eclipse.ui;

 /**
  * An <code>IPlaceholderFolderLayout</code> is used to define the initial
  * view placeholders within a folder.
  * The folder itself is contained within an <code>IPageLayout</code>.
  * <p>
  * This interface is not intended to be implemented by clients.
  * </p>
  *
  * @see IPageLayout#createPlaceholderFolder
  * @since 2.0
  */
 public interface IPlaceholderFolderLayout {
     
     /**
      * Adds a view placeholder to this folder.
      * A view placeholder is used to define the position of a view before the view
      * appears. Initially, it is invisible; however, if the user ever opens a view
      * whose compound id matches the placeholder, the view will appear at the same
      * location as the placeholder.
      * See the {@link IPageLayout} type documentation for more details about compound ids.
      * If the placeholder contains wildcards, it remains in the layout, otherwise
      * it is replaced by the view.
      * If the primary id of the placeholder has no wildcards, it must refer to a view
      * contributed to the workbench's view extension point
      * (named <code>"org.eclipse.ui.views"</code>).
      *
      * @param viewId the compound view id (wildcards allowed)
      */
     public void addPlaceholder(String viewId);
     
     /**
      * Returns the property with the given id or <code>null</code>. Folder
      * properties are an extensible mechanism for perspective authors to
      * customize the appearance of view stacks. The list of customizable
      * properties is determined by the presentation factory.
      *
      * @param id
      * Must not be <code>null</code>.
      * @return property value, or <code>null</code> if the property is not
      * set.
      * @since 3.3
      */
     public String getProperty(String id);
     
     /**
      * Sets the given property to the given value. Folder properties are an
      * extensible mechanism for perspective authors to customize the appearance
      * of view stacks. The list of customizable properties is determined by the
      * presentation factory.
      * <p>
      * These folder properties are intended to be set during
      * <code>IPerspectiveFactory#createInitialLayout</code>. Any subsequent
      * changes to property values after this method completes will not fire
      * change notifications and will not be reflected in the presentation.
      * </p>
      *
      * @param id
      * property id. Must not be <code>null</code>.
      * @param value
      * property value. <code>null</code> will clear the property.
      * @since 3.3
      */
     public void setProperty(String id, String value);
 }

